/**
 * 发送登录验证码请求参数
 * @interface SendLoginSmsRequest
 * @property {string} Mobile - 手机号
 */
export interface SendLoginSmsRequest {
  Mobile: string;
}

/**
 * 微信绑定手机号请求参数
 * @interface WechatBindMobileRequest
 * @property {string} Code - 验证码
 * @property {string} State - 状态码
 * @property {string} Mobile - 手机号
 * @property {string} SesCode - 短信验证码
 * @property {string} WechatKey - 微信密钥
 */
export interface WechatBindMobileRequest {
  Mobile: string;
  SmsCode: string;
  WechatKey: string;
}

/**
 * 手机号验证码登录请求参数
 * @interface LoginBySmsRequest
 * @property {string} Mobile - 手机号
 * @property {string} Code - 短信验证码
 */
export interface LoginBySmsRequest {
  Mobile: string;
  Code: string;
}

/**
 * 修改手机号请求参数
 * @interface ChangeMobileRequest
 * @property {string} Mobile - 新手机号
 * @property {string} Code - 短信验证码
 */
export interface ChangeMobileRequest {
  Mobile: string;
  Code: string;
}

/**
 * 微信登录请求参数
 * @interface WechatLoginRequest
 * @property {string} Code - 微信授权码
 * @property {string} State - 状态码
 */
export interface WechatLoginRequest {
  Code: string;
  State: string;
}

/**
 * 接口响应数据结构
 * @interface ApiResponse
 * @property {number} Code - 响应状态码，0表示成功
 * @property {string} Message - 响应消息
 * @property {T} Data - 响应数据，泛型类型
 */
export interface ApiResponse<T = any> {
  Code: number;
  Message: string;
  Data: T;
}

/**
 * 登录令牌数据结构
 * @interface TokenData
 * @property {string} access_token - 访问令牌
 * @property {number} expires_in - 过期时间
 * @property {string} token_type - 令牌类型
 * @property {string} refresh_token - 刷新令牌
 */
export interface TokenData {
  access_token: string;
  expires_in: number;
  token_type: string;
  refresh_token: string;
}

// 导出微信绑定手机号接口的响应类型
export type WechatBindMobileResponse = ApiResponse<TokenData>;

// 导出微信登录接口的响应类型
export type WechatLoginResponse = ApiResponse<TokenData>;

// 导出修改手机号接口的响应类型
export type ChangeMobileResponse = ApiResponse<boolean>;

// 导出手机号验证码登录接口的响应类型
export type LoginBySmsResponse = ApiResponse<TokenData>;

// 导出发送登录验证码接口的响应类型
export type SendLoginSmsResponse = ApiResponse<string>;

/**
 * 登录配置接口响应类型
 * @interface LoginConfigResponse
 * @property {boolean} EnableSmsLogin - 是否开启短信登录
 * @property {boolean} EnableWechatLogin - 是否开启微信登录
 */
export interface LoginConfig {
  EnableSmsLogin: boolean;
  EnableWechatLogin: boolean;
}

export type LoginConfigResponse = ApiResponse<LoginConfig>;

/**
 * 修改密码请求参数
 * @interface ChangePasswordBySmsRequest
 * @property {string} Mobile - 手机号
 * @property {string} Code - 短信验证码
 * @property {string} NewPassword - 新密码
 * @property {string} ConfirmPassword - 确认密码
 */
export interface ChangePasswordBySmsRequest {
  Mobile: string;
  Code: string;
  NewPassword: string;
  ConfirmPassword: string;
}

// 导出修改密码接口的响应类型
export type ChangePasswordBySmsResponse = ApiResponse<boolean>;
